// pages/cocktail/cocktail.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    selectedMood: '',
    selectedFlavor: '',
    selectedScene: '',
    selectedBase: '',
    customMood: '',
    customTaste: '',
    customBase: '',
    customInput: '',
    historyRecipes: [
      {
        name: '柑橘日落',
        ingredients: '金酒、柠檬汁、橙汁、糖浆',
        image: 'https://images.unsplash.com/photo-1551024709-8f23befc6f87?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1778&q=80'
      },
      {
        name: '莓果气泡',
        ingredients: '伏特加、覆盆子、青柠、苏打水',
        image: 'https://images.unsplash.com/photo-1551024709-8f23befc6f87?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1778&q=80'
      }
    ],
    bannerImage: '/images/tiaojiu.jpg',
    // 添加预设选项
    moodOptions: ['放松休闲', '庆祝欢庆', '浪漫约会', '压力释放', '社交聚会', '创意灵感'],
    flavorOptions: ['清新果香', '甜蜜花香', '温暖香料', '雨后森林的清新感', '热带水果混合', '微苦回甘'],
    sceneOptions: ['居家小酌', '酒吧夜生活', '约会', '朋友聚会', '特别庆典', '独处放空'],
    baseOptions: ['伏特加', '朗姆酒', '威士忌', '金酒', '龙舌兰', '白兰地'],
    isLoading: false,
    serverUrl: '', // 将在onLoad中从全局配置获取
    isTestMode: true  // 开发测试模式，上线时设为false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 从全局配置获取服务器地址
    const app = getApp();
    this.setData({
      serverUrl: app.globalData.serverUrl
    });
    
    this.loadHistoryRecipes();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 1
      });
    }
  },

  /**
   * 选择心情
   */
  selectMood: function(e) {
    this.setData({
      selectedMood: e.currentTarget.dataset.mood
    });
  },

  /**
   * 选择口味
   */
  selectFlavor: function(e) {
    this.setData({
      selectedFlavor: e.currentTarget.dataset.flavor
    });
  },

  /**
   * 选择场景
   */
  selectScene: function(e) {
    this.setData({
      selectedScene: e.currentTarget.dataset.scene
    });
  },

  /**
   * 选择基酒
   */
  selectBase: function(e) {
    this.setData({
      selectedBase: e.currentTarget.dataset.base
    });
  },

  /**
   * 自定义输入变化
   */
  onCustomInputChange: function(e) {
    this.setData({
      customInput: e.detail.value
    });
  },

  /**
   * 生成特调
   */
  generateCocktail: function() {
    // 检查是否至少选择了一项
    if (!this.data.selectedMood && !this.data.selectedFlavor && !this.data.selectedScene && !this.data.selectedBase && !this.data.customInput) {
      wx.showToast({
        title: '请至少选择一项',
        icon: 'none'
      });
      return;
    }

    this.setData({
      isLoading: true
    });

    // 构建请求参数
    let mood = this.data.selectedMood || this.data.customMood || '放松休闲';
    let taste = this.data.selectedFlavor || this.data.customTaste || '清新果香';
    let alcohol = this.data.selectedBase || this.data.customBase || '金酒';
    let scene = this.data.selectedScene || '居家小酌';

    // 如果有自定义输入，优先使用自定义输入作为mood
    if (this.data.customInput) {
      mood = this.data.customInput;
    }

    // 发送请求给后端
    wx.request({
      url: `${this.data.serverUrl}/api/cocktail`,
      method: 'POST',
      data: {
        mood: mood,
        taste: taste,
        alcohol: alcohol,
        scene: scene
      },
      success: (res) => {
        this.setData({
          isLoading: false
        });

        if (res.data.success) {
          // 将API返回的数据存储到全局数据
          const app = getApp();
          app.globalData = app.globalData || {};
          app.globalData.cocktailResult = {
            name: res.data.cocktailName,
            subtitle: `${mood}心情的专属特调`,
            image: res.data.imageUrl,
            ingredients: this.formatIngredients(res.data.formula),
            taste: res.data.formula.tasteProfile,
            guide: res.data.guideline.drinkingMethod,
            health: res.data.guideline.healthReminder,
            setting: res.data.guideline.idealSetting,
            story: res.data.spiritStory,
            cost: res.data.cost
          };

          // 跳转到结果页面
          wx.navigateTo({
            url: '/pages/result/result?source=api'
          });
        } else if (res.data.data) {
          // 如果返回数据但没有标记success，尝试直接解析
          try {
            console.log('API返回数据:', res.data);
            
            // 将完整的API响应传递到结果页面
            wx.navigateTo({
              url: `/pages/result/result?apiData=${encodeURIComponent(JSON.stringify(res.data))}`
            });
          } catch (error) {
            console.error('解析API响应失败:', error);
            wx.showToast({
              title: '数据解析失败',
              icon: 'none'
            });
          }
        } else {
          // 处理API直接返回的数据格式
          // 检查这个响应是否符合期望的API响应格式
          if (res.data.code === 0 && res.data.data) {
            try {
              console.log('直接API响应:', res.data);
              
              // 将完整的API响应传递到结果页面
              wx.navigateTo({
                url: `/pages/result/result?apiData=${encodeURIComponent(JSON.stringify(res.data))}`
              });
            } catch (error) {
              console.error('处理API响应失败:', error);
              wx.showToast({
                title: '数据处理失败',
                icon: 'none'
              });
            }
          } else {
            wx.showToast({
              title: '生成失败，请重试',
              icon: 'none'
            });
          }
        }
      },
      fail: (err) => {
        console.error('API调用失败:', err);
        this.setData({
          isLoading: false
        });
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 格式化配方成数组
   */
  formatIngredients: function(formula) {
    if (!formula) return [];
    
    const ingredients = [];
    
    // 添加基酒
    if (formula.baseSpirits) {
      const baseSpirits = formula.baseSpirits.split('+').map(item => item.trim());
      ingredients.push(...baseSpirits);
    }
    
    // 添加调味元素
    if (formula.flavorElements) {
      const flavorElements = formula.flavorElements.split('+').map(item => item.trim());
      ingredients.push(...flavorElements);
    }
    
    // 添加装饰
    if (formula.garnish) {
      const garnish = formula.garnish.split('+').map(item => item.trim());
      ingredients.push(...garnish);
    }
    
    return ingredients;
  },

  /**
   * 加载历史配方
   */
  loadHistoryRecipes: function() {
    try {
      const historyList = wx.getStorageSync('cocktail_history') || [];
      if (historyList.length > 0) {
        // 获取最新的三条历史配方（从数组末尾开始）
        const recentHistory = historyList.slice(-3).reverse().map((item, index) => ({
          ...item,
          originalIndex: historyList.length - 1 - index // 从完整列表末尾开始计算原始索引
        }));
        this.setData({
          historyRecipes: recentHistory,
          hasMoreHistory: historyList.length > 3 // 标记是否有更多历史记录
        });
      }
    } catch (e) {
      console.error('获取历史记录失败:', e);
    }
  },

  /**
   * 查看历史配方
   */
  viewHistoryRecipe: function(e) {
    const index = e.currentTarget.dataset.index;
    const originalIndex = this.data.historyRecipes[index].originalIndex;
    // 跳转到结果页面，传递正确的历史索引
    wx.navigateTo({
      url: '/pages/result/result?id=' + originalIndex + '&source=history'
    });
  },
  
  /**
   * 查看全部历史配方
   */
  viewAllHistory: function() {
    wx.navigateTo({
      url: '/pages/history/history'
    });
  },
  
  /**
   * 测试API数据
   */
  testApiData: function() {
    const testApiData = {
      "code": 0,
      "cost": "0",
      "data": "{\"cocktailName\":\"云端苦旅\",\"cost\":\"成本约(28元)\",\"data\":\"https://s.coze.cn/t/SwZBfMvc1ik/\",\"formula\":{\"baseSpirits\":\"威士忌45毫升 + 圣日耳曼接骨木花利口酒(15ml)\",\"flavorElements\":\"苦艾酒10毫升+咖啡糖浆15毫升。\"}",
      "debug_url": " https://www.coze.cn/work_flow?execute_id=7519477143471783948&space_id=7519408155462828070&workflow_id=7519427325491560482&execute_mode=2",
      "msg": "Success",
      "token": 1730
    };
    
    // 显示加载中
    this.setData({
      isLoading: true
    });
    
    // 模拟加载过程
    setTimeout(() => {
      this.setData({
        isLoading: false
      });
      
      try {
        // 跳转到结果页面，传递测试数据
        wx.navigateTo({
          url: `/pages/result/result?apiData=${encodeURIComponent(JSON.stringify(testApiData))}`
        });
      } catch (error) {
        console.error('处理测试数据失败:', error);
        wx.showToast({
          title: '测试数据处理失败',
          icon: 'none'
        });
      }
    }, 1000); // 延迟1秒，模拟网络请求
  }
}) 